﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ProyectoAlmacen.Negocio;
using ProyectoAlmacen.Models;

namespace ProyectoAlmacen.Controllers
{
    public class MovimientosController : Controller
    {

        public static MovimientosServiceImpl movimientosService { get; set; }

        public ActionResult Index()
        {

            movimientosService = new MovimientosServiceImpl();
            ICollection<Movimientos> model = movimientosService.ListarMovimientos();
            return View(model);
        }

        //
        // GET: /Movimientos/Details/5

        public ActionResult Details(int id)
        {
            Movimientos model = movimientosService.ObtenerMovimientos(id);
            return View(model);
        }

        //
        // GET: /Movimientos/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Movimientos/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {

                string Mov = collection["idMovimiento"];
                string tM = collection["tipoMovimiento"];
                string OC = collection["idOC"];
                string Mat = collection["idMaterial"];
                string Cant = collection["Cantidad"];
                string Ben = collection["Beneficiario"];
                string Usu = collection["idUsuario"];

                if (Mov == "" || tM == "" || OC == "" || Mat == "" || Cant == "" || Ben == "" || Usu == "")
                {

                    TempData["ValidacionMovimiento"] = "No ha ingresado todos los datos, por favor verifique.";
                    RedirectToAction("Create");
                
                }

                int idMovimiento = int.Parse(collection["idMovimiento"]);
                string tipoMovimiento = collection["tipoMovimiento"];
                int idOC = int.Parse(collection["idOC"]);
                int idMaterial = int.Parse(collection["idMaterial"]);
                double Cantidad = double.Parse(collection["Cantidad"]);
                string Beneficiario = collection["Beneficiario"];
                int idUsuario = int.Parse(collection["idUsuario"]);
                movimientosService.CrearMovimientos(idMovimiento, tipoMovimiento,idOC,idMaterial,Cantidad,Beneficiario,idUsuario);
                return RedirectToAction("Index");

            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /Movimientos/Edit/5
 
        public ActionResult Edit(int id)
        {
            Movimientos model = movimientosService.ObtenerMovimientos(id);
            return View(model);
        }

        //
        // POST: /Movimientos/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                Movimientos model = movimientosService.ObtenerMovimientos(id);
                model.tipoMovimiento = collection["tipoMovimiento"];
                model.idOC = int.Parse(collection["idOC"]);
                model.idMaterial = int.Parse(collection["idMaterial"]);
                model.Cantidad = double.Parse(collection["Cantidad"]);
                model.Beneficiario = collection["Beneficiario"];
                model.idUsuario = int.Parse(collection["idUsuario"]);
                movimientosService.EditarMovimientos(model.idMovimiento, model.tipoMovimiento, model.idOC, model.idMaterial, model.Cantidad, model.Beneficiario, model.idUsuario);
                return RedirectToAction("Index");
 
                
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Movimientos/Delete/5
 
        public ActionResult Delete(int id)
        {
            Movimientos model = movimientosService.ObtenerMovimientos(id);
            return View(model);
        }

        //
        // POST: /Movimientos/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                Movimientos movimientos = new Movimientos();
                movimientos = movimientosService.ObtenerMovimientos(id);
                movimientosService.EliminarMovimientos(movimientos);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
